每次读取一行字符串输入
using namespace std;
char name[20];
char dessert[20];
// 读取一行 直到遇到换行符
// cin.getline() 丢弃换行符
// cin.get() 保留换行符在输入序列中
// 以下可以使用这种组合方式 cin.getline(name, 20).getline(dessert, 20);
// cin.getline(name, 20); // 最多保留19个字符 最后存放'\0'
// cin.getline(dessert, 20);
// 由于换行符保留在输入序列中,则下次读取到换行符,则get()认为已达到行尾,可用不带參的get()读取下一个字符
cin.get(name, 20); // 可以组合 cin.get(name, 20).get();
cin.get();
cin.get(dessert, 20);
cout << name << endl;
cout << dessert << endl;
空行和其他问题
当getline()或get()读取空行时
当get()读取空行后将设置失效位(failbit)。这意味着接下来的输入将被阻断,但可以用下面的命令来恢复输入:
cin.clear();
另一个潜在的问题是,输入字符串可能比分配的空间长。getline()和get()将把余下的字符留在输入队列中,而 getline()还会设置失效位,并关闭后面的输入。
🔚